package GUI;

import accesodatos.FachadaDW;
import java.awt.BorderLayout;
import java.awt.image.BufferedImage;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Ana Maria
 */
public class PromedioTiempoCitas extends JFrame{
    
    BufferedImage image =  null;
    JPanel contentPane;
    FachadaDW dw = new FachadaDW();
    
    public void getPromCitasPorAño(String anio,String tipoGrafica,String estrato, String sexo, String estado_civil, String nivel_escolaridad ){
        
        contentPane = new JPanel(new BorderLayout()); 
        contentPane.setVisible(true);
        
        JLabel title = new JLabel("Promedio de citas por año");
        contentPane.add(title, BorderLayout.NORTH);
        
        String clauseEstratoAC;
        String clauseSexoAC;
        String clauseEstado_civilAC;
        String clauseNivel_EscolaridadAC;
        String clauseEstratoACE;
        String clauseSexoACE;
        String clauseEstado_civilACE;
        String clauseNivel_EscolaridadACE;
        
        Connection conn = dw.conectar();
        
        try{
        
            if(estrato.equals("")||estrato.equals(" ")){
                
                clauseEstratoAC = "";
                clauseEstratoACE = "";
            }else {
            
                clauseEstratoAC = "AND ((SELECT  estrato FROM dimension_demografica WHERE AC.id_demografia = id_demografia) = '"+estrato+"')";
                clauseEstratoACE = "AND ((SELECT  estrato FROM dimension_demografica WHERE ACE.id_demografia = id_demografia) = '"+estrato+"')";
            
            }if(sexo.equals("")|| sexo.equals(" ")){
            
                clauseSexoAC = "";
                clauseSexoACE="";

            }else{
            
                clauseSexoAC = "AND ((SELECT  sexo FROM dimension_demografica WHERE id_demografia = AC.id_demografia) = '"+sexo+"')";
                clauseSexoACE= "AND ((SELECT  sexo FROM dimension_demografica WHERE id_demografia = ACE.id_demografia) = '"+sexo+"')";
            
            }if(estado_civil.equals("")||estado_civil.equals(" ")){
            
                clauseEstado_civilAC = "";
                clauseEstado_civilACE = "";
            
            }else{
            
                clauseEstado_civilAC = "AND ((SELECT  estado_civil FROM dimension_demografica WHERE id_demografia = AC.id_demografia) = '"+estado_civil+"')";
                clauseEstado_civilACE = "AND ((SELECT  estado_civil FROM dimension_demografica WHERE id_demografia = ACE.id_demografia) = '"+estado_civil+"')";
                
            }if(nivel_escolaridad.equals("")||nivel_escolaridad.equals(" ")){
            
                clauseNivel_EscolaridadAC = "";
                clauseNivel_EscolaridadACE="";
            
            }else{
            
                clauseNivel_EscolaridadAC = "AND ((SELECT  nivel_escolaridad FROM dimension_demografica WHERE id_demografia = AC.id_demografia) = '"+nivel_escolaridad+"')";
                clauseNivel_EscolaridadACE = "AND ((SELECT  nivel_escolaridad FROM dimension_demografica WHERE id_demografia = ACE.id_demografia) = '"+nivel_escolaridad+"')";
            }
            
            ArrayList<String> mesesDia1 = new ArrayList();
            ArrayList<String> mesesDia2 = new ArrayList();
            
            for(int i = 1 ; i <= 12; i++ ){
            
                if(i < 10){
                String mesDia1 = anio+"-0"+i+"-01";
                String mesDia2 = anio+"-0"+i+"-31";
                mesesDia1.add(mesDia1);
                mesesDia2.add(mesDia2);
                             
                }else{
                String mesDia1 = anio+"-"+i+"-01";
                String mesDia2 = anio+"-"+i+"-31";
                mesesDia1.add(mesDia1);
                mesesDia2.add(mesDia2);
                }
            }
            
            String ConsultaPromAtenCitas = "(SELECT(SELECT sum(tiempo_espera)/count(tiempo_espera) FROM atencion_citas AC WHERE";
            String  ConsultaPromAtenCitasEspec = " +" +" (SELECT sum(tiempo_espera)/count(tiempo_espera) FROM atencion_cita_especializada ACE WHERE";
            String finConsulta = "/2 promedio);";
            ArrayList<String> clausulas = new ArrayList();
           
            for(int i = 1 ; i <= 12; i++ ){
                
                String consulta = "";
                
                String clausePorMesCitas = "";
                clausePorMesCitas += "((SELECT fecha from fecha where k_fecha = AC.id_fecha_atencion) >= '"+mesesDia1.get(i-1)+"')AND" +
                                     "((SELECT fecha from fecha where k_fecha = AC.id_fecha_atencion) <= '"+mesesDia2.get(i-1)+"')";
                
                clausePorMesCitas+= clauseEstratoAC;
                clausePorMesCitas+=clauseSexoAC;
                clausePorMesCitas+= clauseEstado_civilAC;
                clausePorMesCitas+= clauseNivel_EscolaridadAC;
                clausePorMesCitas+=")";
                                
                String clausePorMesCitasEspec="";
                clausePorMesCitasEspec +="((SELECT fecha from fecha where k_fecha = ACE.id_fecha_atencion) >= '"+mesesDia1.get(i-1)+"') AND" +
                                            "((SELECT fecha from fecha WHERE k_fecha = ACE.id_fecha_atencion) <= '"+mesesDia2.get(i-1)+"')";
            
                clausePorMesCitasEspec+= clauseEstratoACE;
                clausePorMesCitasEspec+=clauseSexoACE;
                clausePorMesCitasEspec+= clauseEstado_civilACE;
                clausePorMesCitasEspec+= clauseNivel_EscolaridadACE;
                clausePorMesCitasEspec+=")";
                
                consulta += ConsultaPromAtenCitas;
                consulta += clausePorMesCitas;
                consulta += ConsultaPromAtenCitasEspec;
                consulta += clausePorMesCitasEspec;
                consulta += finConsulta;
                
                clausulas.add(consulta);
                System.out.println(consulta);
            }
        
            ArrayList<ResultSet> resultados = new ArrayList(); 
            
     
            Statement s = conn.createStatement();
            
            
        }catch(SQLException sqlexception){
        
            System.out.println(sqlexception);
        }catch (Exception exception){
        
            System.out.println(exception);
        
        }

    }
    
    public PromedioTiempoCitas(){
        
        super("Promedio de tiempo de esperas por cita");
        
    }
    
    
    
    public static void main(String args[]){
        
   
        PromedioTiempoCitas tp = new PromedioTiempoCitas();
        String anio = "2011";
        String tipoGrafica= "";
        String estrato = "";
        String sexo = "";
        String estado_civil = "";
        String nivel_escolaridad = ""; 
        tp.getPromCitasPorAño(anio,tipoGrafica,estrato,sexo,estado_civil,nivel_escolaridad);
    }
}


